This invention relates generally to computers and computer software and more particularly relates to differentiating an intended movement when moving a cursor in a windows user interface environment.
A very common interface for a user to interact with her/his computer system is the windows environment. Prior to windows, a user would interact with a computer by typing and entering text, as in the DOS systems of years ago. Now windows, first developed at Xerox PARC, have become ubiquitous. A window is usually a rectangle or square that is displayed on the computer screen or monitor in which the functions of a software program are contained within the boundaries of the rectangle/square. The window may contain text, images, and other content and a user will select a specific function or feature of the program by moving a mouse or other pointer device which in turns moves a cursor, an arrow, or other visual display across the window. More than one window may be open at a time which means that more than one software application may be executing or waiting for input/output; also an application itself may have several layers of windowing. Using multiple open windows, a user can efficiently view and/or operate on the content contained in each window. For example, a first window may provide an interface for a word processing document while a second window may contain another word processing document or a spreadsheet or a presentation being developed by other software; a third window may contain an Internet browser and a fourth window may have the interface for an electronic mail program, etc. Thus, the user can view the content in any of the windows while simultaneously acting out functions associated with any other window. Windows may be stacked one on top of the other or windows may be minimized which means the application is open in the background but the window itself is only visible in a task bar which frames part of all of a display.
An experienced windows user frequently opens and closes and resizes many windows during her/his session of resizing multiple windows. What actually happens sometimes, is that the user may have moved the cursor to the edge of a scroll bar and vertically move the cursor along the edge intending to scroll the contents of the window but instead the user accidentally activates the resize controller instead of the scroll bar. Alternatively, the opposite can happen. A user may wish to resize the window but the computer mistakenly interprets the cursor/arrow motion to scroll through the content of a window.
There is thus a need in the industry to differentiate between windowing events especially when the event occurs in close proximity to two or more windowing functions.
These needs and others that will become apparent to one skilled in the art are satisfied by a method to select a window controller when a user is moving a cursor/screen arrow in a computer window display having at least one window, the method comprising the steps of moving the cursor/screen arrow to an original position; activating a first controller; moving the cursor/arrow in a direction inconsistent with a function controlled by the first controller; activating the next nearest controller; determining if the direction of motion of the cursor/arrow is consistent with a function of the next nearest controller; and repeating the steps of activating the next nearest controller and determining if the direction of motion of the cursor/arrow is consistent with that controller until the direction of motion of the cursor/arrow is consistent with a function of the next nearest controller; and selecting the next nearest controller to control the at least one window.
The inventive method may further comprise saving the original position of the cursor/arrow when the first controller was activated; and saving the time and/or movement of the cursor/arrow during the step of moving the cursor/arrow in a direction inconsistent with a function controlled by the first controller. The method may also comprise the step of determining if the next nearest controller is within a threshold distance of the original position. In addition, the method may comprise the steps of passing the original position and saved time and/or movement to the next nearest controller; and displacing the original position as if it were just within the boundary of the next nearest controller nearest to the original position. The method may also comprise the step of clearing the original position and the saved time and/or movement data before the step of activating the next nearest controller. If the motion of the cursor/arrow is not consistent with a function of any next nearest controller, the method may comprise selecting the first controller to control the at least one window.
The invention may also be considered an apparatus to control a computer window display environment comprising a microprocessor; a semiconductor memory connected to the microprocessor; a computer output display capable of displaying at least one window having a pointer on the display; a computer input device to control the motion of the pointer on the display and to activate at least one function of the window; an operating system having a window manager to manage the computer window display environment; a position recorder to record the original position of the pointer when a user activates at least one function of the window with the computer input device; a movement recorder to record the movement of the pointer when the user moves the pointer across the window with the computer input device; a motion evaluator to evaluate the movement of the pointer; and a window controller selector to select a second or subsequent window controller when the movement of the pointer is not consistent with a first window controller corresponding to the original position.
The invention is also a program product for use with a computer operating system having a windowing display environment, the program product comprising a signal-bearing medium carrying thereon a window controller selector further comprising a cursor/arrow position detector which detects the original position of a cursor/arrow on a window; a movement recorder to track the motion of the cursor/arrow on a window; a window controller selector choosing a first of a plurality of window controllers, the first window controller corresponding to the original position of the cursor/arrow; a movement/controller discriminator discerning whether the motion of the cursor/arrow is consistent with one of the plurality of selected window controllers and, if not, the window controller selector chooses the next nearest window controller not previously selected but still within a threshold distance of the original position; but if the movement/controller discriminator did discern that the motion of the cursor/arrow was consistent with one of the selected window controller, a window manager passes data from the cursor/arrow position detector and the movement recorder to the next window controller.
The invention may also be an apparatus to select a window controller in a computer windowing interface display, comprising means to display at least one window having a cursor/arrow; means to activate one of a plurality of functions associated with the at least one window; means to select the first controller associated with a position of the cursor/arrow on the at least one window; means to determine that a movement of the cursor/arrow is not consistent with a function of the first controller; means to select the next nearest controller within a threshold distance to an original position of the cursor/arrow on the at least one window; means to determine if the movement of the cursor/arrow is consistent with a function of the next nearest controller; if so, the apparatus further comprises means for the next nearest controller to control the window. The apparatus may further comprise means to repeat the function associated with the means to select the next nearest controller within a threshold distance to an original position of the cursor/arrow on the at least one window and the means to determine if the movement of the cursor/arrow is consistent with a function of the next nearest controller if the movement of the cursor/arrow is not consistent with a function of the next nearest controller until no next nearest controller within the threshold distance of the original position of the cursor/arrow has a function consistent with the movement of the cursor/arrow; and a means to default control of the window to the first controller.